﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Cinch; //Add
using System.ComponentModel.Composition;//Add
using System.Reflection;
using WebProject.Controls;
using System.Security.Principal;//Add

namespace WebProject
{
    public partial class App : Application
    {
       
        public App()
        {
            this.Startup += this.Application_Startup;
            this.UnhandledException += this.Application_UnhandledException;

           

            InitializeComponent();
        }

        private void Application_Startup(object sender, StartupEventArgs e)
        {
            // Add (Source: codeproject.com)
            /* the CinchBootStrapper boots up the Cinch system, and we pass in a list 
             * of Assemblies for MEF to find the Exports and Imports to marry up. 
             *  In this case, we are passing in the current assembly 
             * (XAP) file. But we could extend this list to include other XAP files, 
             * if for instance we were dynamically downloading extra XAP files. 
             * See the Cinch documentation for how to do this.
             * 
             * */
            CinchBootStrapper.Initialise(new List<Assembly> { typeof(App).Assembly });

            this.RootVisual = new MainPage();
        }

        private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
        {
            // Wenn die Anwendung außerhalb des Debuggers ausgeführt wird, melden Sie die Ausnahme mithilfe
            // eines ChildWindow-Steuerelements.
            if (!System.Diagnostics.Debugger.IsAttached)
            {
                // Hinweis: So kann die Anwendung weiterhin ausgeführt werden, nachdem eine Ausnahme ausgelöst, aber nicht
                // behandelt wurde. 
                // Bei Produktionsanwendungen sollte diese Fehlerbehandlung durch eine Anwendung ersetzt werden, die 
                // den Fehler der Website meldet und die Anwendung beendet.
                e.Handled = true;
                ChildWindow errorWin = new ErrorWindow(e.ExceptionObject);
                errorWin.Show();
            }
        }
    }
}